package com.extension.company.common.utils;

import android.app.Activity;
import android.content.Context;
import android.util.DisplayMetrics;

/**
 * px sp  dp 转化的工具类
 */
public class DisplayUtils {


	/**
	 * 设备屏幕宽度
	 *
	 * @param context 上下文
	 * @return 手机屏幕的宽度 px
	 */

	public static int getScreenWidth(Context context) {
		return context.getResources().getDisplayMetrics().widthPixels;
	}

	/**
	 * 设备屏幕高度
	 *
	 * @param context 上下文
	 * @return 手机屏幕的高度
	 */

	public static int getScreenHeight(Context context) {
		return context.getResources().getDisplayMetrics().heightPixels;
	}

	/**
	 * 获取屏幕的信息---只可在activity中获取WindowManager
	 *
	 * @param context 上下文
	 * @return 手机屏幕的信息--可通过dm.widthPixels dm.heightPixels获取手机的屏幕宽高
	 */
	public static DisplayMetrics getScreen(Activity context) {
		DisplayMetrics dm = new DisplayMetrics();
		context.getWindowManager().getDefaultDisplay().getMetrics(dm);
		return dm;
	}

	/**
	 * 转换dip为px
	 *
	 * @param context 上下文
	 * @param dip     dp值
	 * @return dp 正数 ==向上取整   dp负数==向下取整
	 */

	public static int convertDip2Px(Context context, int dip) {
		float scale = context.getResources().getDisplayMetrics().density;
		return (int) (dip * scale + 0.5f * (dip >= 0 ? 1 : -1));
	}

	/**
	 * 转换px为dip
	 *
	 * @param context 上下文
	 * @param px      px值
	 * @return px 正数==向上取整   负数  向下取整
	 */

	public static int convertPx2Dip(Context context, int px) {
		float scale = context.getResources().getDisplayMetrics().density;
		return (int) (px / scale + 0.5f * (px >= 0 ? 1 : -1));
	}

    /*public static int dp2px(Context context, float dipVal) {
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipVal, context.getResources().getDisplayMetrics());
    }

    public static int sp2dp(Context context, float spVal) {
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, spVal, context.getResources().getDisplayMetrics());
    }*/

	/**
	 * sp转化为dp
	 *
	 * @param context 调用者上下文
	 * @param spValue sp值
	 * @return 转化后的px值
	 */
	public static int sp2px(Context context, float spValue) {
		float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
		return (int) (spValue * fontScale + 0.5f);
	}

	/**
	 * px 转为sp
	 *
	 * @param context 上下文
	 * @param pxValue px 值
	 * @return 向上取整后sp
	 */
	public static int px2sp(Context context, float pxValue) {
		float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
		return (int) (pxValue / fontScale + 0.5f);
	}

	/**
	 * 获取指定id的资源的px值
	 *
	 * @param dimensionId 资源的id号
	 * @return 返回资源的px 值 （*四舍五入的值）
	 */
	public static int getPixelById(Context context, int dimensionId) {
		return context.getResources().getDimensionPixelSize(dimensionId);
	}

	/**
	 * 按ios 750x1334比例算出px，再转化成dp  宽的计算方法
	 *
	 * @param context 上下文
	 * @param iospx   ui给出的ios图的px值
	 * @return
	 */
	public static int getIosToAndroidWidth(Context context, int iospx) {
		return convertPx2Dip(context, getScreenWidth(context) * iospx / 750);
	}

	/**
	 * 按ios 750x1334比例算出px，再转化成dp
	 *
	 * @param context 上下文
	 * @param iospx
	 * @return
	 */
	public static int getIosToAndroidHeight(Context context, int iospx) {
		return convertPx2Dip(context, getScreenHeight(context) * iospx / 1334);
	}
}